package ltd.hanamaki.study.exception.demo01;

/**
 * 异常抛出
 */
public class Demo03 {
    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
//        demo03.test(1, 0);

        System.out.println(2);

        demo03.test1();

        try {
            demo03.test2();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void test(int a, int b) {

        /* 检查性异常 */
        /* 来处理异常的方式
         *  1. 异常捕获
         *  2. 抛出
         *       1. 方法内抛出
         *       2. 方法上抛出 */
        if (b == 0) {
            /* 手动抛出异常 */
            throw new ArithmeticException();
        } else {
            int result = a / b;
        }

    }

    public void test1() {

        /* 使用 try catch 来解决异常  */
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

    /* 将异常 在方法上 抛出  */
    /* 如果异常 是通过在方法上抛出来处理的 ，那么，在调用此方法的时候就必须解决异常  */
    public void test2() throws Exception {
        Thread.sleep(3000);
    }
}
